از ASP کلاسيک تا ASP.NET ( بخش دوم )
در بخش اول ، به ضرورت های حرکت به سمت ASP.NET اشاره و با ساختار و معما ری اوليه آن نيز آشنا شديم . در بخش دوم به بررسی تغييرات اساسی ايجاد شده در ASP.NET نسبت به ASP کلاسيک ، اشاره می گردد .
بخش سوم : تغييرات عمده در ASP.NET
يکی از اهداف اوليه و مهم ASP.NET سازگاری کامل آن با ASP کلاسيک است . دستيابی به هدف فوق بصورت کامل و در مرحله عمل غير ممکن بنظر می آيد . زمانيکه اين محصول ارائه گرديد ، صرفا" يک تفاوت اساسی مربوط به يکی از اشياء مهم ( شی Request) ، در آن مشهود بود . در ASP کلاسيک ، Querystring و مجموعه Form مربوط به شی Request ، برداری از نوع رشته را برمی گردانند . اما در ASP.NET آنها يک مجموعه شامل نام / مقدار را برمی گردانند. در اغلب حالات تعييرات اعمال شده بگونه ای بوده که از اشياء موجود استفاده و امکانات آنها افزايش يا بد .يکی ديگر از موارد قابل تامل ، احتياط در بکارگيری Response.write است . زمانيکه امکان فوق بهمراه تگ های Server-Side استفاده می گردد، نتايج در بالای صفحه و قبل از تگ HTML نمايش داده خواهند شد. بمنظور استفاده درست از امکان فوق و نمايش نتايج دلخواه در مکان مورد نظر، می بايست Response.write از طريق تگ های Server-side و يا از طريق توابع مورد نظر ، فراخوانده گردد.در اين راستا می توان از کنترل های سرويس دهنده نظير : Labels و يا PlaceHolder استفاده کرد . هر يک از اشياء اساسی نظير : Request , Response , Server, Session و ... دارای تعداد زيادی خصلت و متد جديد شده و در عين حال تعداد ديگر شی اضافه گرديده است .مثلا" شی Cashe باعث پياده سازی سيستم Cashe برای يک نرم افزار متکی بر وب می گردد و يا شی ديگر، اطلاعات کاربری که در حال استفاده از برنامه است ، در خود نگهداری می نمايد . و يا شی Trace که می توان اطلاعات مربوط به رديابی را بکمک آن در خروجی نمايش داد، نمونه هائی از اشياء جديد می با شند .
تغييرات ساختاری
در زمان کوچ از ASP کلاسيک بسمت ASP.NET ، می بايست به تغييرات ساختاری بوجود آمده نيز دقت گردد. برخلاف صفحات ASP کلاسيک ، در ASP.NET در هر صفحه صرفا" می توان از يک زبان استفاده کرد . ويژگی فوق يکی از مشهودترين تغييرات بوجود آمده در ساختار است . بنابراين نمی توان در يک صفحه چندين زبان را بخدمت گرفت . استثنا" می توان از کنترل های کاربر که توسط يک زبان نوشته شده اند، در صفحاتی که با زبان ديگر نوشته شده اند ، استفاده کرد . قانون فوق صرفا" محدود به کدهای نوشته شده ای است که می بايست بر روی سرويس دهنده اجراء گردنند و استفاده از اسکريپت ها بر روی سرويس گيرنده نظير آنچيزی است که تاکنون استفاده شده است .
تغيير ديگر: يک صفحه aspx می تواند دارای صرفا" يک تگ فرم Server-side بوده وپس از ارسال می بايست به صفحه يکسانی ارسال گردد. البته در اين راستا همچنان می توان از تگ های Client-Side Form نيز استفاده نمود . در چنين وضعيتی می توان آنها را برای ساير صفحات موجود ديگر نيز ارسال کرد .جدول زير امکا نا تی را که می توان بهمراه صفحات aspx استفاده کرد ، نشان می دهد .
مثال |
امکانات | ||||||||||||||||||||||
<%@ Directive %> |
يک صفحه ممکن است دارای دايرکتيو باشد.. دايرکتيوها شامل خصلت های خاصی برای صفحات ، نظير زبان مورد استفاده در صفحه و يا اسمبلی هائيکه می بايست به صفحه Import گردنند، باشد . | ||||||||||||||||||||||
|
از تگ های کنترلی Server-Side نيز می توان استفاده نمود. | ||||||||||||||||||||||
تعاريف کنترل شده وب ، که دارای خصلت Runat server می باشند. | |||||||||||||||||||||||
<%# %> |
عبارات نسبت دهی داده . عبارات فوق امکان بازيابی داده را از منابع داده ئی تعريف شده فراهم می نمايند. | ||||||||||||||||||||||
<%-- --%> |
نظير اسکريپت های توضيحی Client-Side می توان از توضيحات Server-Side استفاده نمود. | ||||||||||||||||||||||
<%= %> , <% %> |
می توان از Server-Side Includes و render Blocks نيز استفاده نمود. | ||||||||||||||||||||||
|
تغييرات بوجود آمده در کدهای بلاکی . در ASP کلاسيک محدوديتی از بعد محل و زمان تعريف موارد نظر وجود نداشت . اما در ASP.NET ضوابطی بدين منظور وضع شده است . نمی توان توابع را درون تگ های <% %> تعريف نمود .بنابراين می بايست مطمئن گرديد که تمامی توابع و متغيرهای مورد نظر درون بلاک |
اغلب برنامه نويسان از توابع خاصی با نام render استفاده می نمايند. ويژگی مهم در اين زمينه ، امکان ايجاد کدهای Server-Side و تگ های Html بوجود آمده که با اولويت خاص خود اجراء خواهند گرديد. در مثال روبرو تابعی با نام MyRenderFunction فراخوانده شده و بلافاصله تعريف شده است همانگونه که مشاهده می گردد تگ هدر ، بعنوان بخشی از تابع محسوب می گردد.بنابراين زمانيکه تابع فراخوانده می شود تگ هدر مربوطه Render خواهد شد.اين نوع نوشتن تابع و فراخوانی در ASP.NET مجاز نبوده و می بايست تمام کدهای مربوطه درون بلاک
عکس شما |
????? ????????
????? ?????? ??????????? ???????? ???????? ???????? ??? ???? ???????? |